#!/bin/bash
# 独立依赖下载脚本

set -e

# 默认到脚本上级目录执行
cd `dirname $0`
cd ..
echo "当前执行目录: $(pwd)"


# 参数解析
FORCE_FULL_DOWNLOAD=false
while getopts "f" opt; do
  case $opt in
    f) 
      echo "参数设置: 强制全量下载"
      FORCE_FULL_DOWNLOAD=true 
      ;;
    \?)
      echo "无效参数: -$OPTARG" >&2
      exit 1
      ;;
  esac
done

# 处理依赖项
if [ -f "pkg/requirements-linux-cpu.txt" ]; then
    # 保存旧requirements文件
    cp pkg/requirements-linux-cpu.txt pkg/requirements-linux-cpu.old.txt
fi

# 生成新的requirements文件
echo "生成新的requirements文件..."
pip list --format=freeze > pkg/requirements-linux-cpu.txt

# 创建dependencies目录（如果不存在）
mkdir -p pkg/dependencies

# 下载依赖逻辑
if [ "$FORCE_FULL_DOWNLOAD" = true ] || [ ! -f "pkg/requirements-linux-cpu.old.txt" ]; then
    echo "执行全量依赖下载..."
    pip download --dest pkg/dependencies -r pkg/requirements-linux-cpu.txt
else
    # 找出新增的依赖项
    echo "检查增量依赖..."
    NEW_REQUIREMENTS=$(comm -13 <(sort pkg/requirements-linux-cpu.old.txt) <(sort pkg/requirements-linux-cpu.txt))
    
    if [ -n "$NEW_REQUIREMENTS" ]; then
        echo "发现新增依赖项，正在增量下载..."
        echo "$NEW_REQUIREMENTS" > pkg/new-requirements.txt
        pip download --dest pkg/dependencies -r pkg/new-requirements.txt
        rm pkg/new-requirements.txt
    else
        echo "没有发现新增依赖项"
    fi
fi

echo "==== 依赖下载完成 ==== $(date)"